using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Acme.BookStore.Domain.Entities;
using Volo.Abp.Domain.Repositories;

namespace Acme.BookStore.Kehus
{
    public interface IKehuRepository : IRepository<Kehu, string>
    {
        Task<List<Kehu>> GetListAsync(
            int skipCount,
            int maxResultCount,
            string sorting,
            string filter = null
        );

        Task<List<Kehu>> GetListAsync(
            int skipCount,
            int maxResultCount,
            string sorting,
            string filter = null,
            string name = null,
            string contactPerson = null,
            string phone = null,
            string mobile = null,
            string enterpriseAttribute = null
        );
        
        Task<List<Kehu>> SearchByNameAsync(
            int skipCount,
            int maxResultCount,
            string sorting,
            string nameKeyword
        );

        Task<long> GetCountAsync(string filter = null);

        Task<long> GetCountAsync(
            string filter = null,
            string name = null,
            string contactPerson = null,
            string phone = null,
            string mobile = null,
            string enterpriseAttribute = null
        );
        
        Task<long> GetCountByNameAsync(string nameKeyword);
    }
} 